package thread;

import gare.Gare;

/**
 * Le rôle Thread pour accéder la gare. Le rôle Objet partagée pour que les
 * voyageurs puissent monter.
 */
public class Train extends Thread {

	public static int CAPACITE_TRAIN = 50;

	public static int ARRET_TRAIN = 15000;

	/**
	 * Compris entre 50 et 300
	 */
	public static int VITESSE_TRAIN = (int) (Math.random() * (300 - 50)) + 50;

	/**
	 * 
	 * */
	private int NbDisponible;

	private Gare desination;

	private int numeroTrain;

	public Train(int num, Gare gare) {
		numeroTrain = num;
		NbDisponible = (int) (Math.random() * CAPACITE_TRAIN);
		this.desination = gare;

		System.out.println(NbDisponible);
	}

	public void setDestination(Gare gare) {
		this.desination = gare;
	}

	public void run() {
		try {
			sleep(10000 / VITESSE_TRAIN);
			desination.getEspaceQuai().accueillirTrain(this);
			sleep(ARRET_TRAIN);
			desination.getEspaceQuai().sortirTrain(this);

		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public int getNbDisponible() {
		return NbDisponible;
	}

	public void monter(Voyageur voyageur) {
		NbDisponible--;
		System.out.println(voyageur.toString() + "a monter sur "
				+ this.toString());
	}

	public String toString() {
		return "Train[" + numeroTrain + "]";
	}

}
